main(), die den Benutzer nach der Starthöhe, dem Höhenverlust und der Höhenreserve fragt, die Funktionen aufruft und die Gleitstrecke ausgibt.assert-Statement, um sicherzustellen, dass die berechneten Gleitstrecken den erwarteten Werten entsprechen.Beispiel:
def test_negative_starthoehe():
assert berechne_gleitstrecke(-1, 1, 1) == 0
Schreiben Sie eine Funktion ist_prim, die überprüft, ob eine Zahl eine Primzahl ist. Die Funktion soll True zurückgeben, wenn die Zahl eine Primzahl ist, und False, wenn nicht.
Hinweise:
% verwendet werdenTrue für 2, 3, 5, 7 und False für 1, 4, 6, 8, 9 zurückgibt).Schreiben Sie eine Funktion, die alle Primzahlen bis zu einer gegebenen Zahl n findet und in einer Liste zurückgibt.
Hinweise:
n eine Primzahl ist.Summe der Primzahlen: Schreiben Sie eine Funktion, die die Summe aller Primzahlen bis n berechnet.
Beispiel: Für n = 10 → 2 + 3 + 5 + 7 = 17.
Primzahldifferenzen: Erstellen Sie eine Liste mit den Abständen zwischen aufeinanderfolgenden Primzahlen bis n.
Beispiel: Zwischen 2, 3, 5, 7 → Differenzen: [1, 2, 2].
Primzahlzwillinge: Finden Sie alle Primzahlzwillinge (Paare von Primzahlen, die genau 2 auseinanderliegen, z. B. (3,5), (5,7), (11,13)) bis n.
In dieser Aufgabe programmieren Sie einen Simulator für ein Würfelspiel und analysieren verschiedene Strategien.
Das Spiel „Pig“ oder „Böse Eins“:
Ihre Aufgabe: Testen Sie verschiedene Strategien durch Simulation!
Teil 1: Grundfunktionen
Schreiben Sie folgende Funktionen:
a) wuerfle():
randomb) spiele_runde(anzahl_wuerfe):
anzahl_wuerfe mal und speichert alle Würfe in einer ListeTesten Sie beide Funktionen mit random.seed für reproduzierbare Ergebnisse.
Teil 2: Strategien implementieren
Eine Strategie legt fest, wie oft man maximal würfelt, bevor man aufhört.
Schreiben Sie eine Funktion spiele_strategie(max_wuerfe, ziel_punkte):
max_wuerfe: Anzahl Würfe pro Runde (die "Strategie")ziel_punkte: Punkte, die zum Gewinnen nötig sind (z.B. 100)gesamt, zählt Runden in rundenspiele_runde(max_wuerfe) aufgesamtTesten Sie mit max_wuerfe=3 und ziel_punkte=100.
Erstellen Sie ein Struktogramm für die Funktion spiele_strategie.
Teil 3: Mehrfache Simulation
Schreiben Sie eine Funktion simuliere_strategie(max_wuerfe, ziel_punkte, anzahl_spiele):
anzahl_spiele malrandom.seed(i) vor jedem Spiel (mit i als Schleifenvariable)Führen Sie durch:
Teil 4: Statistische Auswertung
Schreiben Sie eine Funktion analysiere_strategie(runden_liste, strategie_name):
math.sqrt() für die WurzelDie Funktion analysiere_strategie gibt die Ergebnisse formatiert aus:
Strategie: [strategie_name]
Durchschnitt: X.X Runden
Min: X Runden, Max: X Runden
Standardabweichung: X.X
Analysieren Sie alle vier Strategien. Welche ist am effizientesten?
Zusatz 1: Optimale Strategie finden
Schreiben Sie eine Schleife, die alle Strategien von 1 bis 10 Würfen testet (jeweils 1000 Spiele) und die durchschnittliche Rundenanzahl in einer Liste speichert. Finden Sie die optimale Strategie (kleinste durchschnittliche Rundenanzahl).
Zusatz 2: Risiko-Analyse
Berechnen Sie für jede Strategie: Wie oft (in Prozent) wird in einer Runde eine 1 gewürfelt und damit die Runde verloren? Verwenden Sie dafür die Wahrscheinlichkeitsrechnung:
Zusatz 3: Detaillierte Ausgabe
Erweitern Sie spiele_runde() so, dass bei gesetztem optionalen Parameter debug=True jeder einzelne Wurf ausgegeben wird, z.B.: "Wurf 1: 4, Wurf 2: 6, Wurf 3: 1 → Runde verloren!"
Visualisieren Sie den zeitlichen Verlauf von Spannung und Strom an verschiedenen Wechselstromwiderständen.
Formeln:
Konstanten: V, A, Hz,
Importieren Sie matplotlib.pyplot und math.
a) Definieren Sie die Konstanten , , und .
b) Schreiben Sie zwei Funktionen spannung(t) und strom(t, phi), die die Formeln für und implementieren und jeweils einen Wert zurückgeben.
c) Erstellen Sie mit einer List Comprehension eine Liste t_werte mit 200 Intervallen von 0 bis 0.04 s (zwei Perioden).
Hinweis: Formel für den i-ten Zeitpunkt: für
Erstellen Sie einen Plot für den ohmschen Widerstand ():
a) Berechnen Sie u_werte und i_werte mit List Comprehensions, die Ihre Funktionen aufrufen.
b) Plotten Sie beide Kurven in einem Diagramm:
c) Fügen Sie hinzu: Gitter, Achsenbeschriftungen, Titel
d) Zeigen Sie den Plot an oder speichern Sie ihn.
Erstellen Sie einen Plot für eine Spule ():
a) Berechnen Sie u_werte und i_werte mit den Funktionen und der neuen Phasenverschiebung.
b) Plotten Sie beide Kurven:
c) Markieren Sie den Punkt bei s auf der Spannungskurve mit einem roten Kreis.
d) Fügen Sie Gitter, Beschriftungen und Titel hinzu.
Erstellen Sie einen Plot für einen Kondensator ():
a) Berechnen Sie u_werte und i_werte mit den Funktionen und der neuen Phasenverschiebung.
b) Plotten Sie beide Kurven:
c) Markieren Sie den Punkt bei s auf der Stromkurve mit einem schwarzen Quadrat.
d) Fügen Sie Gitter, Beschriftungen und Titel hinzu.
Zusatz 1: Erstellen Sie eine Figur mit drei Subplots (1 Zeile, 3 Spalten), die alle drei Fälle nebeneinander zeigt. Verwenden Sie plt.subplot() (-> Dokumentation).
Zusatz 2: Fügen Sie den einzelnen Plots Legenden hinzu. Verwenden Sie plt.legend() (-> Dokumentation).
Zusatz 2: Die Momentanleistung ist . Berechnen Sie und visualisieren Sie die Leistung für alle drei Fälle in separaten Plots. Was fällt bei der Spule und beim Kondensator auf?
Zusatz 3: Schreiben Sie eine Funktion plot_phasenverschiebung(phi_grad), die Spannung und Strom für eine beliebige Phasenverschiebung in Grad plottet. Testen Sie mit verschiedenen Werten.